<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de consultation
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 2 || $GLOBALS['USER']['admin'])){

?>
<?php
//------------------------------------------------------------ Définition des variables d'affichage

	// variable indiquant la page sélectionnée
	if(isset($_GET['l']) && numericInt($_GET['l'])){ 
		$page = $_GET['l'];
	}else{
		$page = 1;
	}
		
	// variable indiquant l'ordre selon lequel on tri la liste
	if(isset($_GET['o'])){
		switch($_GET['o']){
		case 0: $ordre = 0; $ordreBDD = "ASC"; break;
		case 1: $ordre = 1; $ordreBDD = "DESC"; break;
		default: $ordre = 1; $ordreBDD = "DESC"; break;
		}
	}else{
		$ordre = 1;
		$ordreBDD = "DESC";
	}
	
	// variable indiquant la colonne selon laquelle on tri la liste
	if(isset($_GET['t'])){
		switch($_GET['t']){
		case 1: $tri = 1; $triBDD = "dateSortie ".$ordreBDD; break;
		case 2: $tri = 2; $triBDD = "dateRetour ".$ordreBDD.", dateRetourPrevu ".$ordreBDD; break;
		case 3: $tri = 3; $triBDD = "structure ".$ordreBDD; break;
		case 4: $tri = 4; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		default: $tri = 1; $triBDD = "dateSortie ".$ordreBDD; break;
		}
	}else{
		$tri = 1;
		$triBDD = "dateSortie ".$ordreBDD;
	}
	
	// Traitement des options
	$optionsSet = false;
	$optionsURL = "";
	
	if(isset($_POST['opt_seulDepasse']) || isset($_GET['opt_seulDepasse'])){
		$optionsURL .= "&amp;opt_seulDepasse=1";
		$optionsSet = true;
	}
	if((isset($_POST['opt_seulStatut']) || isset($_GET['opt_seulStatut'])) && (isset($_POST['opt_statutType']) || isset($_GET['opt_statutType']))){
		if(isset($_POST['opt_statutType'])){
			$opt_statutType = $_POST['opt_statutType'];
		}else{
			$opt_statutType = $_GET['opt_statutType'];
		}
		if($opt_statutType >= 1 && $opt_statutType <= 3){
			$optionsURL .= "&amp;opt_seulStatut=1&amp;opt_statutType=".$opt_statutType."";
			$optionsSet = true;
		}
	}
	
?>
<?php
//------------------------------------------------------------ Récupération de la liste des prets

	// On compte le nombre total de prets enregistrés
	$nb_total_prets = 0;
	
	$query_compte_prets = "SELECT COUNT(*) ";
	$query_compte_prets .= "FROM pret_sortant p ";
	$query_compte_prets .= "INNER JOIN sortie so ON so.CODEPRETSORTANT = p.CODEPRETSORTANT ";
	$query_compte_prets .= "LEFT JOIN entree en ON en.CODEPRETSORTANT = p.CODEPRETSORTANT ";
	$query_compte_prets .= "WHERE 1 ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDepasse']) || isset($_GET['opt_seulDepasse'])){
			$query_compte_prets .= "AND (en.DATEENTREE IS NULL AND p.DATERETOUR < CURDATE()) ";
		}
		if(isset($opt_statutType)){
			switch($opt_statutType){
			case 1: $query_compte_prets .= "AND so.DATESORTIE > CURDATE() "; break;
			case 2: $query_compte_prets .= "AND so.DATESORTIE <= CURDATE() AND (en.DATEENTREE IS NULL OR en.DATEENTREE > CURDATE()) "; break;
			case 3: $query_compte_prets .= "AND en.DATEENTREE <= CURDATE() "; break;
			}
		}
	}
	
	$result_compte_prets = mysql_query($query_compte_prets, $connexion) or logError("COMPTE PRETS SORTANTS-".$query_compte_prets."-".mysql_error());
	
	$tab_compte_prets = mysql_fetch_row($result_compte_prets);
	
	$nb_total_prets = $tab_compte_prets[0];
	
	mysql_free_result($result_compte_prets);
	
	// récupération des informations des prets
	$query_recuperation_liste_prets = "SELECT p.CODEPRETSORTANT AS id, so.DATESORTIE AS dateSortie, en.DATEENTREE AS dateRetour, p.DATERETOUR AS dateRetourPrevu, st.NOMSTRUCTURE AS structure, f.NOMFAMILLE AS famille, g.NOMGENRE AS genre, e.NOMESPECE AS espece, sesp.NOMSOUSESPECE AS sousespece, v.NOMVARIETE AS variete, so.CODESACHETGRAINE AS sachet, so.CODESEMIS AS semis, so.CODETOUFFE AS touffe ";
	$query_recuperation_liste_prets .= "FROM pret_sortant p ";
	$query_recuperation_liste_prets .= "INNER JOIN structure st ON st.CODESTRUCTURE = p.CODESTRUCTURE ";
	$query_recuperation_liste_prets .= "INNER JOIN sortie so ON so.CODEPRETSORTANT = p.CODEPRETSORTANT ";
	$query_recuperation_liste_prets .= "LEFT JOIN entree en ON en.CODEPRETSORTANT = p.CODEPRETSORTANT ";
	$query_recuperation_liste_prets .= "LEFT JOIN sachet_graines sa ON so.CODESACHETGRAINE = sa.CODESACHETGRAINE ";
	$query_recuperation_liste_prets .= "LEFT JOIN semis se ON so.CODESEMIS = se.CODESEMIS ";
	$query_recuperation_liste_prets .= "LEFT JOIN touffe tou ON so.CODETOUFFE = tou.CODETOUFFE ";
	$query_recuperation_liste_prets .= "LEFT JOIN taxon t ON t.CODETAXON = sa.CODETAXON OR t.CODETAXON = se.CODETAXON OR t.CODETAXON = tou.CODETAXON ";
	$query_recuperation_liste_prets .= "LEFT JOIN est_de_famille l1 INNER JOIN famille f ON f.CODEFAMILLE = l1.CODEFAMILLE ON l1.CODETAXON = t.CODETAXON AND l1.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_prets .= "LEFT JOIN appartient_a_genre l2 INNER JOIN genre g ON g.CODEGENRE = l2.CODEGENRE ON l2.CODETAXON = t.CODETAXON AND l2.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_prets .= "LEFT JOIN est_de_espece l3 INNER JOIN espece e ON e.CODEESPECE = l3.CODEESPECE ON l3.CODETAXON = t.CODETAXON AND l3.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_prets .= "LEFT JOIN est_de_sous_espece l33 INNER JOIN sous_espece sesp ON sesp.CODESOUSESPECE = l33.CODESOUSESPECE ON l33.CODETAXON = t.CODETAXON AND l33.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_prets .= "LEFT JOIN a_comme_variete l4 INNER JOIN variete v ON v.CODEVARIETE = l4.CODEVARIETE ON l4.CODETAXON = t.CODETAXON AND l4.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_prets .= "WHERE 1 ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDepasse']) || isset($_GET['opt_seulDepasse'])){
			$query_recuperation_liste_prets .= "AND (en.DATEENTREE IS NULL AND p.DATERETOUR < CURDATE()) ";
		}
		if(isset($opt_statutType)){
			switch($opt_statutType){
			case 1: $query_recuperation_liste_prets .= "AND so.DATESORTIE > CURDATE() "; break;
			case 2: $query_recuperation_liste_prets .= "AND so.DATESORTIE <= CURDATE() AND (en.DATEENTREE IS NULL OR en.DATEENTREE > CURDATE()) "; break;
			case 3: $query_recuperation_liste_prets .= "AND en.DATEENTREE <= CURDATE() "; break;
			}
		}
	}
	$query_recuperation_liste_prets .= "ORDER BY ".$triBDD." ";
	$query_recuperation_liste_prets .= "LIMIT ".(($page-1)*$GLOBALS['CONFIG']['nbParPage']).", ".($GLOBALS['CONFIG']['nbParPage'])." ";
	
	$result_recuperation_liste_prets = mysql_query($query_recuperation_liste_prets, $connexion) or logError("RECUPERATION LISTE PRETS SORTANTS-".$query_recuperation_liste_prets."-".mysql_error());
	
	$lst_prets = array(); // on créé un tableau qui contient la liste des prêts ainsi que les informations de chacune
	$nb_prets = 0;
	while($tab_recuperation_liste_prets = mysql_fetch_assoc($result_recuperation_liste_prets)){
	
		$lst_prets[$nb_prets] = $tab_recuperation_liste_prets;
		$nb_prets++;
		
	}
	
	mysql_free_result($result_recuperation_liste_prets);

?>
<a name="liste"></a>
<h2>Liste des prêts du jardin botanique</h2>

<?php 

   $tabth = array ('Date','Retour','Destination','Végétal','Statut');
   
   $extraIcon = array();
   
   for($i=0;$i<$nb_prets;$i++){
      
		$enCours = false;
      
      if(!is_null($lst_prets[$i]['dateRetour'])){
   		$dateRetour = dateFr($lst_prets[$i]['dateRetour']);
   	}else{
   		if(!is_null($lst_prets[$i]['dateRetourPrevu'])){
   			if(strtotime($lst_prets[$i]['dateRetourPrevu']) < strtotime(date("Y-m-d")) && is_null($lst_prets[$i]['dateRetour'])){ // On utilise strtotime() afin d'éviter les problèmes avec les 0 initiaux dans une comparaison de chaines de caractères
   				$dateRetour = "<span style=\"color: #FF0000;\">".dateFr($lst_prets[$i]['dateRetourPrevu'])." (<i>prévu</i>)</span>";
   			}else{
   				$dateRetour = dateFr($lst_prets[$i]['dateRetourPrevu'])." (<i>prévu</i>)";
   			}
   		}else{
   			$dateRetour = "<i>non-précisée</i>";
   		}
   	}
      

   	if(!is_null($lst_prets[$i]['sachet'])){
   		$vegetal = "<b><i>Graines</i></b> : ";
   	}else if(!is_null($lst_prets[$i]['semis'])){
   		$vegetal = "<b><i>Semis</i></b> : ";
   	}else if(!is_null($lst_prets[$i]['touffe'])){
   		$vegetal = "<b><i>Touffe</i></b> : ";
   	}
   	$vegetal .= "(".htmlentities(capitalise($lst_prets[$i]['famille']), ENT_NOQUOTES, "UTF-8").") <b>".htmlentities(capitalise($lst_prets[$i]['genre']), ENT_NOQUOTES, "UTF-8")." ".htmlentities($lst_prets[$i]['espece'], ENT_NOQUOTES, "UTF-8")." ".htmlentities($lst_prets[$i]['sousespece'], ENT_NOQUOTES, "UTF-8")."</b> <i>".htmlentities($lst_prets[$i]['variete'], ENT_NOQUOTES, "UTF-8")."</i>";

      
      if(strtotime($lst_prets[$i]['dateSortie']) <= strtotime(date("Y-m-d"))){ // On utilise strtotime() afin d'éviter les problèmes avec les 0 initiaux dans une comparaison de chaines de caractères
			if(!is_null($lst_prets[$i]['dateRetour'])){
				if(strtotime($lst_prets[$i]['dateRetour']) > strtotime(date("Y-m-d"))){ // On utilise strtotime() afin d'éviter les problèmes avec les 0 initiaux dans une comparaison de chaines de caractères
					$statut = "<i><span style=\"font-weight: bold; color: #00AAFF;\">en cours</span></i>";
					$enCours = true;
				}else{
					$statut = "<i><span style=\"font-weight: bold; color: #FF0000;\">rendu</span></i>";
				}
			}else{
				$statut = "<i><span style=\"font-weight: bold; color: #00AAFF;\">en cours</span></i>";
				$enCours = true;
			}
		}else{
			$statut = "<i><span style=\"font-weight: bold; color: #00AA00;\">prévu</span></i>";
		}
      
    	if($enCours){
			if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
				$extraIcon[$i] = " - <a href=\"index.php?p=gestion/pretsortant_retourne&amp;id=".$lst_prets[$i]['id']."\"><img src=\"images/entree.png\" title=\"Indiquez le retour du végétal prêté\" alt=\"Retourner\" /></a>";
			}
		}else{
			if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
				$extraIcon[$i] = " - <a href=\"index.php?p=gestion/pretsortant_annule&amp;id=".$lst_prets[$i]['id']."\"><img src=\"images/annuler.png\" title=\"Annuler le rendu du végétal prêté\" alt=\"Annuler rendu\" /></a>";
			}
		}
      
   
      $tab_result[$i] = array (  htmlentities($lst_prets[$i]['id'], ENT_NOQUOTES, "UTF-8"),
                                 dateFr(htmlentities($lst_prets[$i]['dateSortie'], ENT_NOQUOTES, "UTF-8")),
                                 $dateRetour,
                                 htmlentities($lst_prets[$i]['structure'], ENT_NOQUOTES, "UTF-8"),
                                 $vegetal,
                                 $statut );
   
   }

   
   displayListe("pretsortant",900,$nb_total_prets,$optionsURL,'',1,$extraIcon);



?>

</div>
<div class="options" style="margin-left: auto; margin-right: auto; width: 875px">
	<span id="indOF_options"><?php if($optionsSet) echo "▼"; else echo "►"; ?></span> <a href="#liste" onclick="ouvrirFermerTXT('lst_options', 1, 'indOF_options', '▼', '►'); return false;">Options</a>
	<div id="lst_options" style="display: <?php if($optionsSet) echo "block"; else echo "none"; ?>;">
		<form id="frm_options" method="post" action="index.php?p=gestion/pretsortant_gere&amp;l=<?php echo $page; ?>&amp;t=<?php echo $tri; ?>&amp;o=<?php echo $ordre; ?>#liste">
			<input type="checkbox" name="opt_seulDepasse" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulDepasse']) || isset($_GET['opt_seulDepasse'])) echo "checked=\"checked\""; ?> /> <label>Seulement les prêts en retard</label><br />
			<input id="opt_seulStatut" type="checkbox" name="opt_seulStatut" <?php if(isset($_POST['opt_seulStatut']) || isset($_GET['opt_seulStatut'])) echo "checked=\"checked\""; ?> />
			<label>Seulement les prêts</label> 
			<select name="opt_statutType" onchange="document.getElementById('opt_seulStatut').checked=true;">
				<option value="1" <?php if(isset($opt_statutType) && $opt_statutType == 1) echo "selected=\"selected\""; ?>>Prévus</option>
				<option value="2" <?php if(isset($opt_statutType) && $opt_statutType == 2) echo "selected=\"selected\""; ?>>En cours</option>
				<option value="3" <?php if(isset($opt_statutType) && $opt_statutType == 3) echo "selected=\"selected\""; ?>>Rendus</option>
			</select>
			<input type="submit" value="ok" />
		</form>
	</div>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>